from pyspark.sql.functions import explode
from pyspark.sql import SparkSession
from pyspark.ml.recommendation import ALSModel
import os;os.environ['PYSPARK_PYTHON'] = "D:\\python310\\python.exe" # Path to Python.exe in env
# 创建 SparkSession 对象，设置应用程序名称为 "als"
spark = SparkSession.builder.appName("als").getOrCreate()

# 设置模型路径
path = "C:\\alsmodel"

# 加载 ALS 模型
model = ALSModel.load(path)

# 创建一个包含单个用户的 DataFrame，指定列名为 "userid"，并指定用户ID为 4123
user = spark.createDataFrame([(4123,)], ["userid"])

# 使用模型为用户进行推荐，最多返回 2 条推荐结果
user_recs = model.recommendForUserSubset(user, 2)

# 将推荐结果的嵌套数组展开成单独的行
df = user_recs.withColumn("recommendation_ex", explode("recommendations"))

# 显示结果 DataFrame
df.show()
